<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>抽象基类</title>
</head>
<body>
<script>
  class Base{
      constructor() {
          console.log(new.target)
          /*
          * 基类只供继承 不被实例化 我们可以使用new.target进行判断
          * 因为子类继承父类 子类也会调用父类的构造函数
          *
          * */


          if (new.target === Base) throw Error("基类不能被初始化")


          /*
          * 也可以强制要求子类中必须有某个方法 因为这里的基类不会被实例化,所以this对象一定是子类的实例对象
          * */
          if (!this.foo) throw new Error("必须定义foo方法")
      }
  }

  class Student extends Base{

  }

  new Student()
  // new Base()


</script>
</body>
</html>